package main
import "C"
import "fmt"

//参考链接：https://www.cnblogs.com/majianguo/p/7486812.html

//如何在C++中调用golang程序。用golang编写一个简单的函数，编译成动态链接库，然后在C++中调用该go函数

/*
go语言源代码和编译的中间文件、目标文件存放位置如下：
C:\Go    <<--- GOROOT 指向的位置
    --src                 <<--- Go 语言自带的源代码
    --pkg                 <<--- 编译的中间文件放在此文件夹
    --bin                 <<--- 编译的目标文件放在此文件夹

D:\MyWorks  <<--- GOPATH 指向的位置
    --src                 <<--- 项目源代码放置在此文件夹。!!!警告：一个常犯的错误是把 GOPATH 指向此处!!!
        --HelloWorld      <<--- 我们项目源代码所在的文件夹。!!!警告：一个常犯的错误是把 GOPATH 指向此处!!!
        --vendor          <<--- 第三方开源代码文件夹
            --github.com
                --...
    --pkg                 <<--- 编译的中间文件放在此文件夹，Go编译器自动生成此文件夹
    --bin                 <<--- 编译的目标文件放在此文件夹，Go编译器自动生成此文件夹

*/



//export Add
func Add(num1,num2 int32)int32{
	return num1 + num2
}

func main() {
	fmt.Println(Add(12,34))
}

//为动态链接库指定导出符号，创建godll.def
//内容如下：
//EXPORTS
//    Add

//编译成动态链接库指令
//go build -buildmode=c-archive
//该步骤会生成.a  .h文件


//执行指令
//gcc -m32  -shared -o godll.dll godll.def build_dll.a -static -lwinmm -lWs2_32














